module.exports = (app) => {
  const { Schema, model, getModelName, pre } = app.jax.mongoose
  const modelName = getModelName(__filename)

  const adminMenuSchema = new Schema({
    menuName: String, // 菜单名称
    parentId: Schema.Types.ObjectId, // 上级ID
    rank: { type: Number, set: (value) => (value != '' ? Number(value) : null) }, // 序号
    isTop: { type: Boolean, default: false }, // 是否置顶，序号设置后自动置顶
    path: String, // 菜单路径
    isDefault: { type: Boolean, default: false }, // 是否默认菜单
    icon: String, // 图标样式
    iconImage: String, // 图标图片
    query: String, // 菜单参数
    roleId: Schema.Types.ObjectId, // 所属角色ID
    systemType: String, // 所属系统(请看字典)
  })

  // 修改
  adminMenuSchema.pre(['updateOne', 'findOneAndUpdate', 'updateMany'], function () {
    const data = this.getUpdate()
    pre.getRank(data)
  })

  // 新增
  adminMenuSchema.pre('save', function () {
    pre.getRank(this)
  })

  const AdminMenuModel = model(modelName, adminMenuSchema, null, null, {
    id: 'menuId',
  })

  return AdminMenuModel
}
